package com.rachel.testjetpack;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;

import com.rachel.testjetpack.bean.Fruit;
import com.rachel.testjetpack.bean.Pet;
import com.rachel.testjetpack.bean.User;
import com.rachel.testjetpack.databinding.ActivityMian2Binding;

/**
 * DataBinding
 * 数据绑定简单的解释就是，之前我们需要通过获取控件 通过控件设置数据，现在有了数据绑定 我们可以直接在布局文件中直接绑定数据。
 * 使用前 首先我们在build.gradle 中配置
 * https://blog.csdn.net/huangliniqng/article/details/106228067?spm=1001.2014.3001.5501
 * dataBinding {
 * enabled = true
 * }
 */
public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMian2Binding activityMain2Binding = DataBindingUtil.setContentView(this, R.layout.activity_mian2);

        //静态数据绑定:通过@{}的引用方式设置数据
        Fruit fruit = new Fruit("苹果", "红色");
        activityMain2Binding.setFruit(fruit);
        findViewById(R.id.btn_fruit_change).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fruit.setFruitName("香蕉");
                activityMain2Binding.setFruit(fruit);
            }
        });
        //动态数据绑定：可观察字段，在数据变化的时候自动更新
        Pet pet = new Pet();
        pet.petName.set("狗-初始值");
        pet.petColor.set("男");
        activityMain2Binding.setPet(pet);
        findViewById(R.id.btn_pet_change).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pet.petName.set("猫-改变后的值");
            }
        });

        //动态数据绑定：可观察对象User，在数据变化的时候自动更新
        User user = new User("黄林晴-可变对象", "男");
        activityMain2Binding.setUser(user);
        findViewById(R.id.btn_change).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                user.setUserName("黄林晴-数据更新");
            }
        });
    }
}